////////////////////////////////////////////////////////////////////////////////
// Includes
////////////////////////////////////////////////////////////////////////////////

#include "MasksManager.hpp"
#include "SCSystem.hpp"
#include "SCProgram.hpp"
#include <string>
#include <sstream>

using namespace std;

////////////////////////////////////////////////////////////////////////////////
// Namespaces
////////////////////////////////////////////////////////////////////////////////

namespace SC {

////////////////////////////////////////////////////////////////////////////////
// Implementation
////////////////////////////////////////////////////////////////////////////////

const int MasksManager::FindSystemMaskIdx(const SCSystem & system) const {
	string sys = system.GetDefinition();
	unsigned int	min_w_cards = sys.size() + 1,
					nb_w_cards;
	int index = -1;
	for (int i=0; i<(int)this->masks.size(); ++i) {
		if (Match(sys, this->masks[i].mask, nb_w_cards, WILDCARD) && (nb_w_cards < min_w_cards)) {
			min_w_cards = nb_w_cards;
			index = i;
		}
	}
	return index;
}

////////////////////////////////////////////////////////////////////////////////
// Closing Namespaces
////////////////////////////////////////////////////////////////////////////////

}

////////////////////////////////////////////////////////////////////////////////
